//
// Created by vista on 2017/10/25.
//

#ifndef FACEA_COMMON_H
#define FACEA_COMMON_H

#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/photo/photo.hpp>

#include <cctype>
#include <iostream>
#include <iterator>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <opencv/cv.h>
#include <ctime>
#include <string>
#include <limits>
#include <algorithm>
#include <cmath>
#include <vector>
#include <fstream>
#include <numeric>
#include <utility>

using std::vector;
using std::string;

using cv::Mat;
using cv::CascadeClassifier;
using cv::Rect;
using cv::Point2d;
using cv::Size2i;
using cv::Size2d;
using cv::Mat1d;
using cv::waitKey;

struct Params{
    double bagging_overlap;
    int max_numtrees;
    int max_depth;
    int landmark_num;// to be decided
    int initial_num;

    int max_numstage;
    double max_radio_radius[10];
    int max_numfeats[10]; // number of pixel pairs
    int max_numthreshs;
};

class BoundingBox{
public:
    double start_x;
    double start_y;
    double width;
    double height;
    double centroid_x;
    double centroid_y;

    BoundingBox(){
        start_x = 0;
        start_y = 0;
        width = 0;
        height = 0;
        centroid_x = 0;
        centroid_y = 0;
    };
};

extern Params global_params;

// 人脸特征点检测模型路径
extern string modelPath;

// 人脸特征点检测模型路径
extern string out_path;

// 人脸检测模型路径
extern string fd_model;

extern string dataPath;

extern string cascadeName;

#endif //FACEA_COMMON_H
